﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO;
using System.Diagnostics;
using ENT.GP.Core.Core;
using System.Data;
using System.Configuration;


namespace entgp.Estadisticas
{
    public partial class ListadoProyectos : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                string tipo="";
                string opcion=Request.QueryString.Get("opc");
                string[] valores;
                valores = opcion.Split(' ');
                int idRegion;
                int.TryParse(valores[valores.Length-1], out idRegion);
                var listaP = new List<Param>();
                listaP.Add(new Param() { Parametro = "PROV", Valor = opcion });
                listaP.Add(new Param(){ Parametro="IDREGION" , Valor=idRegion});
                var datos = Util.EjecutarSPGenerico("Obtener_Listado_Proyectos_Estadistica", listaP);
                if (idRegion>0)
                    tipo = "Region";
                else
                    tipo = "Provincia";

                Document doc = new Document(PageSize.A4.Rotate(), 10, 10, 10, 10);
                string nombre;

                if (idRegion==0)                
                     nombre = string.Format("ListadoProyectos{0}{1}.pdf", tipo, opcion);                
                else
                     nombre = string.Format("ListadoProyectos{0}{1}.pdf",tipo, idRegion );
                
                string filename =HttpContext.Current.Server.MapPath(string.Format("/entgp/Estadisticas/{0}",nombre));
                if(File.Exists(filename))
                    File.Delete(filename);
                FileStream file = new FileStream(filename, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
                PdfWriter.GetInstance(doc, file);
                doc.Open();
                GenerarDocumento(doc, datos,tipo);
                doc.Close();
                //Process.Start(filename);
                string urlArchivoLeer = string.Format("{0}Estadisticas/{1}", ConfigurationManager.AppSettings.Get("PathServer"),nombre);
                winContenedor.LoadContent(urlArchivoLeer, true);
                //winContenedor.Maximize();
                winContenedor.Show();
            }
            catch (Exception ex)
            {
                Util.RegistarLog(ex);
            }
        } 

        private string GenerarConsulta(string tipo)
        {
            string consulta;
            consulta = "SELECT proy.NOMBREPROYECTO,Prov.VALITEMCAT,Can.VALITEMCAT,proy.APORTEPLAN,proy.APORTECONTRAPARTE + proy.APORTECONTRAPARTE2 as Contraparte, proy.COSTOTOTAL FROM entpm_catalogo prov INNER JOIN entpm_proyecto proy ON (prov.IDCATALOGO = proy.PROVINCIAID) INNER JOIN entpm_catalogo Can ON (Proy.CANTONID = Can.IDCATALOGO)";
            if (char.IsDigit( tipo[tipo.Length-1]))
            {
                consulta = string.Format("{0} where proy.regionid=287+{1}",consulta, tipo);
            }
            else
            {
                consulta = string.Format("{0} where lower(prov.VALITEMCAT)=lower('{1}')", consulta, tipo);
            }
            
            return consulta;
        }

        private void GenerarDocumento(Document document, DataSet datos,string tipo)
        {
            document.AddTitle(string.Format("Listado de Proyectos por {0}",tipo));
            //se crea un objeto PdfTable con el numero de columnas del 
            //dataGridView
            PdfPTable datatable = new PdfPTable(6);
            //asignamos algunas propiedades para el diseño del pdf
            datatable.DefaultCell.Padding = 3;
            float[] headerwidths = new float[] { 150, 100, 100, 100, 100, 100 };

            datatable.SetWidths(headerwidths);
            datatable.WidthPercentage = 100;
            datatable.DefaultCell.BorderWidth = 2;
            datatable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;

            //SE GENERA EL ENCABEZADO DE LA TABLA EN EL PDF

            datatable.AddCell("Nombre de Proyecto");
            datatable.AddCell("Provincia");
            datatable.AddCell("Cantón");
            datatable.AddCell("Aporte Plan");
            datatable.AddCell("Aporte Contraparte");
            datatable.AddCell("Inversion Total");


            datatable.HeaderRows = 1;
            datatable.DefaultCell.BorderWidth = 1;
            //aqui establecer el numero de filas que contendra el listado de los proyectos
            //int nFilas = 1;
            //string informacionCelda = "";
            //SE GENERA EL CUERPO DEL PDF
            foreach (DataRow fila in datos.Tables[0].Rows)
            {
                datatable.AddCell(fila[0].ToString());
                datatable.AddCell(fila[1].ToString());
                datatable.AddCell(fila[2].ToString());
                datatable.AddCell(fila[3].ToString());
                datatable.AddCell(fila[4].ToString());
                datatable.AddCell(fila[5].ToString());
            }
            

            //SE AGREGAR LA PDFPTABLE AL DOCUMENTO
            document.Add(datatable);
        }
    }
}
